const axios = require('axios');
const config = require('../config/config');

class AuthController {
  // 微信小程序登录
  async login(req, res) {
    const { code } = req.body;

    if (!code) {
      return res.json({ success: false, message: '缺少code参数' });
    }

    try {
      // 调用微信接口，用 code 换取 openid 和 session_key
      const url = 'https://api.weixin.qq.com/sns/jscode2session';
      const params = {
        appid: config.wechat.appId,
        secret: config.wechat.appSecret,
        js_code: code,
        grant_type: 'authorization_code'
      };

      const response = await axios.get(url, { params });
      const data = response.data;

      if (data.errcode) {
        console.error('微信登录失败:', data);
        return res.json({
          success: false,
          message: data.errmsg || '登录失败'
        });
      }

      // 返回 openid 给小程序
      // 注意：session_key 不应该返回给客户端（安全问题）
      // 如果需要使用 session_key，应该存储在服务端
      res.json({
        success: true,
        data: {
          openid: data.openid
          // sessionKey 不返回，避免安全风险
        }
      });
    } catch (error) {
      console.error('登录错误:', error);
      res.json({ success: false, message: '系统错误' });
    }
  }
}

module.exports = new AuthController();

